package com.gs.business.comadi.categorie;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Vector;

import com.gs.business.cache.CacheCategorie;
import com.gs.domain.CatSpese;
import com.gs.domain.wrapper.WrapCatSpese;
import comi.gsi.command.ICommand;
import comi.gsi.command.javabeancommand.AbstractCommandForJavaBean;
import comi.gsi.command.javabeancommand.AbstractOggettoEntita;

public class CommandDeleteAllCategorie extends AbstractCommandForJavaBean implements ICommand {

	private AbstractOggettoEntita[] entities = null;

	public CommandDeleteAllCategorie() throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
		final CacheCategorie cache = CacheCategorie.getSingleton();
		mappaCache = (HashMap<String, AbstractOggettoEntita>) cache.getCache();
		this.wrap = new WrapCatSpese();
		this.entita = null;
		
		riempiEntities(entities);
	}

	private void riempiEntities(AbstractOggettoEntita[] entities2) throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
		Vector<CatSpese> vettoreCategorie = CacheCategorie.getSingleton().getVettoreCategorie();
		entities2 = new AbstractOggettoEntita[vettoreCategorie.size()];
		int i = 0;
		for (Object element : vettoreCategorie) {
			CatSpese catSpese = (CatSpese) element;
			CatSpese catSpeseClonata = catSpese.clona();
			entities2[i] = catSpeseClonata;
		}

	}

	@Override
	public boolean execute() {
		if (wrap.deleteAll()) {
			mappaCache.clear();
			return true;
		}
		return false;
	}

	@Override
	public boolean unExecute() {
		for (AbstractOggettoEntita entitie : entities) {

			if (entitie instanceof CatSpese) {
				if (wrap.insert(entita)) {
					mappaCache.put(entitie.getIdEntita(), entitie);
					return true;
				}
			}
		}
		return false;
	}

	@Override
	public String toString() {
		return "Eliminate tutte le Categorie";
	}

	@Override
	public void scriviLogExecute(final boolean isComandoEseguito) {
		if (isComandoEseguito) {
			//			Alert.operazioniSegnalazioneInfo("Ok, entrata" + entita.getnome() + " eliminata correttamente!");
		}
	}

	@Override
	public void scriviLogUnExecute(final boolean isComandoEseguito) {
		if (isComandoEseguito) {
			//			Alert.operazioniSegnalazioneInfo("Ok, ripristinata entrata" + entita.getnome() + " precedentemente eliminata!");
		}
	}

}
